#include "StdAfx.h"
#include "FIFO.h"
#include "MapParameters.h"

CFIFO::CFIFO(void)
{
	m_MaxQueueLength=MAXNODENUMBER+10;	
	m_QueueHead=0;
	m_QueueNext=0;
//	CreateQueue();
	m_QueueLength=0;
	Q=new int [m_MaxQueueLength];
}

CFIFO::~CFIFO(void)
{
//	if (!Q)
		delete Q;
}

bool CFIFO::CreateQueue(void)
{
	m_QueueLength=0;
	if (!Q)
		Q=(int *)malloc (m_MaxQueueLength * sizeof(int));
	if (!Q) return false;
	return true;
}

bool CFIFO::EnQueue(int e)
{
	if ((!Q)) 
		return false;
//	if (m_QueueLength==m_MaxQueueLength) 
//	{
//		Q=(int *)realloc(Q, (m_MaxQueueLength+QUEUEINCREMENT) * sizeof(int));
//		if (!Q)
//			return false;
//		m_MaxQueueLength=m_MaxQueueLength+QUEUEINCREMENT;
//	}

	*(Q+m_QueueNext++)=e;

	return true;
}

bool CFIFO::DeQueue(int * e)
{
	if ((!Q) || m_QueueHead==m_QueueNext) 
		return false;
	*e=*(Q+m_QueueHead++);

	return true;
}